<!DOCTYPE html>
<meta charset="UTF-8">
<style>
.parent {
  cx: 100px;
}
.target {
  font-size: 16px;
  cx: 50px;
}
.expected {
  fill: green;
}
</style>
<body>
<template id="target-template">
  <svg width="90" height="90">
    <path class="target" />
  </svg>
</template>
<script src="resources/interpolation-test.js"></script>
<script>
'use strict';

// Distinct number of path segments
assertNoInterpolation({
  property: 'd',
  from: "path('M 0 0 H 1 H 2')",
  to: "path('M 0 0 H 3')"
});

assertNoInterpolation({
  property: 'd',
  from: "path('M 1 2 L 3 4 Z')",
  to: "none"
});

// Distinct segment types
assertNoInterpolation({
  property: 'd',
  from: "path('M 10 0 H 11')",
  to: "path('M 20 0 V 2')"
});

assertNoInterpolation({
  property: 'd',
  from: "path('M 1 2 L 4 6 Z')",
  to: "path('M 1 2 L 4 6')"
});

// Exercise each segment type
assertInterpolation({
  property: 'd',
  from: "path('M 0 0 Z')",
  to: "path('M 0 0 Z')"
}, [
  {at: -0.4, is: "path('M 0 0 Z')"},
  {at: 0, is: "path('M 0 0 Z')"},
  {at: 0.2, is: "path('M 0 0 Z')"},
  {at: 0.6, is: "path('M 0 0 Z')"},
  {at: 1, is: "path('M 0 0 Z')"},
  {at: 1.4, is: "path('M 0 0 Z')"}
]);

assertInterpolation({
  property: 'd',
  from: "path('M 20 50')",
  to: "path('M 30 70')"
}, [
  {at: -0.4, is: "path('M 16 42')"},
  {at: 0, is: "path('M 20 50')"},
  {at: 0.2, is: "path('M 22 54')"},
  {at: 0.6, is: "path('M 26 62')"},
  {at: 1, is: "path('M 30 70')"},
  {at: 1.4, is: "path('M 34 78')"}
]);

assertInterpolation({
  property: 'd',
  from: "path('m 20 50')",
  to: "path('m 30 70')"
}, [
  {at: -0.4, is: "path('M 16 42')"},
  {at: 0, is: "path('M 20 50')"},
  {at: 0.2, is: "path('M 22 54')"},
  {at: 0.6, is: "path('M 26 62')"},
  {at: 1, is: "path('M 30 70')"},
  {at: 1.4, is: "path('M 34 78')"}
]);

assertInterpolation({
  property: 'd',
  from: "path('m 0 0 L 20 50')",
  to: "path('m 0 0 L 30 70')"
}, [
  {at: -0.4, is: "path('M 0 0 L 16 42')"},
  {at: 0, is: "path('M 0 0 L 20 50')"},
  {at: 0.2, is: "path('M 0 0 L 22 54')"},
  {at: 0.6, is: "path('M 0 0 L 26 62')"},
  {at: 1, is: "path('M 0 0 L 30 70')"},
  {at: 1.4, is: "path('M 0 0 L 34 78')"}
]);

assertInterpolation({
  property: 'd',
  from: "path('m 0 0 l 20 50')",
  to: "path('m 0 0 l 30 70')"
}, [
  {at: -0.4, is: "path('M 0 0 L 16 42')"},
  {at: 0, is: "path('M 0 0 L 20 50')"},
  {at: 0.2, is: "path('M 0 0 L 22 54')"},
  {at: 0.6, is: "path('M 0 0 L 26 62')"},
  {at: 1, is: "path('M 0 0 L 30 70')"},
  {at: 1.4, is: "path('M 0 0 L 34 78')"}
]);
</script>
</body>
